home *** CD-ROM | disk | FTP | other *** search
/ DS-CD ROM 2 1993 August / DS CD-ROM 2.Ausgabe (August 1993).iso / programm / ds0257 / doc.exe / STRINGS1.DOC < prev    next >
Text File  |  1992-02-02  |  5KB  |  125 lines

  1.   ─────────────────────────────────────────────────────────────────────────────
  2.   Dokumentation zur Datei: STRINGS1.INC
  3.  
  4.   ─────────────────────────────────────────────────────────────────────────────
  5.    
  6.     STRINGS1.INC - Weitere Routinen zur Stringbearbeitung
  7.                    (für den Assembler A86)
  8.    
  9.                    (c) Bernd Schemmer 1990 - 1992
  10.                    Letzter Update: 02.02.1992
  11.    
  12.    
  13.     ■ Routinen:
  14.     -----------
  15.     KomprimiereString       - Komprimiert einen String durch Ersetzen
  16.                               aller Folgen mit mehr als 2 Zeichen eines
  17.                               Zeichens durch eine Repeat-Kennung
  18.     DeKomprimiereString     - Dekomprimiert einen von KomprimiereString
  19.                               komprimierten String
  20.     FormatiereASCIIString   - Formatiert einen ASCII-String, d.h. alle
  21.                               Zeichen mit einem ASCII-Code kleiner als
  22.                               32 werden durch '#nnn' dargestellt, wobei
  23.                               nnn der ASCII-Code des Zeichens ist.
  24.     DeformatiereASCIIString - Deformatiert einen ASCII-String
  25.    
  26.    
  27.    
  28.     ----------------------------
  29.     KomprimiereString
  30.    
  31.     Funktion:  Komprimieren eines Strings durch Ersetzen von
  32.                Folgen gleicher Zeichen durch einen Duplikator
  33.                und das Zeichen
  34.    
  35.     Eingabe:   DS:SI -> zu komprimierender String
  36.    
  37.     Ausgabe:   CF = 0 ->> okay
  38.                CF = 1 ->> Fehler, Rep-Marker kommt im Quellstring vor
  39.                           Inhalt des Strings ist undefiniert
  40.    
  41.     Bes.:      Der Rep-Marker darf im String nicht vorkommen!
  42.    
  43.     Der Rep-Marker kann vom Programm anders definiert werden!
  44.    
  45.     RepMarker EQU 00h             ; Byte, Marker zur Kennung einer
  46.                                   ; Komprimierung
  47.    
  48.     ----------------------------
  49.     DeKomprimiereString
  50.    
  51.     Funktion:  DeKomprimieren eines Strings
  52.    
  53.     Eingabe:   DS:SI -> komprimierter String
  54.                ES:DI -> Puffer für den dekomprimierten String
  55.    
  56.     Ausgabe:   CF = 0 ->> okay, Puffer enthält den dekomprimierten String
  57.                CF = 1 ->> Fehler, dekomprimierter String würde zu lang
  58.                           oder Format-Fehler
  59.                           Puffer enthält nur einen Leerstring
  60.    
  61.     ----------------------------
  62.     FormatiereASCIIString
  63.    
  64.     Funktion:  Aufbereiten eines ASCIIStrings für die Anzeige
  65.    
  66.     Eingabe:   DS:SI -> ASCIIString
  67.                ES:DI -> Puffer für den konvertierten ASCIIString
  68.    
  69.     Ausgabe:   CF = 0 ->> okay
  70.                CF = 1 ->> Fehler, String würde zu lang werden
  71.                           ES:DI enthält einen Leerstring
  72.    
  73.     Bes.:      Gegenstück zu DeFormatiereASCIIString
  74.    
  75.                Der String wird folgendermaßen konvertiert:
  76.                Zeichen mit einem ASCII-Code größer oder gleich
  77.                MaxKonvert werden so übernommen, Zeichen mit einem
  78.                ASCII-Code kleiner als MaxKonvert werden in der
  79.                Form '#nnn' übernommen wobei nnn der 3-stellige
  80.                ASCII-Code des Zeichens ist
  81.                Das Zeichen '#' wird als '##' ausgegeben.
  82.    
  83.     Die beiden folgenden Konstanten können durch Deklaration im
  84.     Programm überschrieben werden!
  85.    
  86.     NummerZ    EQU '#'          ; Byte, Nummernzeichen für die ASCII-Codes in
  87.                                 ; Dezimalschreibweise
  88.     MaxKonvert EQU 32xD         ; Byte, Zeichen mit einem ASCII-Code kleiner als
  89.                                 ; MaxKonvert werden durch den ASCII-Code in
  90.                                 ; Dezimalschreibweise konvertiert
  91.    
  92.     ----------------------------
  93.     DeFormatiereASCIIString
  94.    
  95.     Funktion:  Konvertieren eines ASCIIStrings
  96.    
  97.     Eingabe:   DS:SI -> zu konvertierender ASCIIString
  98.                ES:DI -> Puffer für den konvertierten ASCIIString
  99.    
  100.     Ausgabe:   Puffer bei ES:DI gefüllt
  101.    
  102.     Bes.:      Gegenstück zu FormatiereASCIIString
  103.    
  104.                   Der ASCIIString muß folgendermaßen aufgebaut sein:
  105.                   Zeichen mit einem ASCII-Code kleiner als MaxKonvert
  106.                   müssen in der Form '#nnn' eingegeben werden, wobei
  107.                   'nnn' der dezimale ASCII-Code des Zeichens ist.
  108.                   Da die Konvertierungsroutine max. 3 folgende Ziffern
  109.                   nach '#' als ASCII-Code interpretiert muß 'nnn',
  110.                   falls nach diesem Zeichen eine Ziffer folgen soll,
  111.                   dreistellig sein. Folgt hinter dem Zeichen keine
  112.                   Ziffer, kann '#nnn' auch ohne führende Nullen
  113.                   angegeben werden.
  114.                   (z.B. das Zeichen mit dem ASCII-Code 12 muß, falls
  115.                    eine Ziffer folgen soll mit '#012' angegeben
  116.                    werden; ansonsten reicht '#12')
  117.                   Zeichen mit einem ASCII-Code größer als MaxKonvert
  118.                   können in der Form '#nnn' eingegeben werden oder
  119.                   so wie sie sind.
  120.                   (z.B. 'A' könnte als 'A', '#065', oder '#65' ange-
  121.                    geben werden.)
  122.                   Das Zeichen '#' muß entweder als '##' oder als '#35'
  123.                   angegeben werden.
  124.    
  125.